package br.com.hs.nfe.common.enumeration;

/**
 * Enumeração das situações tributárias do IPI.
 * @author Ranlive Hrysyk
 */
public enum IPIEnum {

    /**
     * 00 - Entrada com recuperação de crédito.
     */
    IPI_00("00", "IPI 00 - Entrada com recuperação de crédito"),
    /**
     * 01 - Entrada tributada com alíquota zero.
     */
    IPI_01("01", "IPI 01 - Entrada tributada com alíquota zero"),
    /**
     * 02 - Entrada isenta
     */
    IPI_02("02", "IPI 02 - Entrada isenta"),
    /**
     * 03 - Entrada não-tributada.
     */
    IPI_03("03", "IPI 03 - Entrada não-tributada"),
    /**
     * 04 - Entrada imune.
     */
    IPI_04("04", "IPI 04 - Entrada imune"),
    /**
     * 05 - Entrada com suspensão.
     */
    IPI_05("05", "IPI 05 - Entrada com suspensão"),
    /**
     * 49 - Outras entradas.
     */
    IPI_49("49", "IPI 49 - Outras entradas"),
    /**
     * 50 - Saída tributada.
     */
    IPI_50("50", "IPI 50 - Saída tributada"),
    /**
     * 51 - Saída tributada com alíquota zero.
     */
    IPI_51("51", "IPI 51 - Saída tributada com alíquota zero"),
    /**
     * 52  - Saída isenta.
     */
    IPI_52("52", "IPI 52  - Saída isenta"),
    /**
     * 53 - Saída não-tributada.
     */
    IPI_53("53", "IPI 53 - Saída não-tributada"),
    /**
     * 54 - Saída imune.
     */
    IPI_54("54", "IPI 54 - Saída imune"),
    /**
     * 55 - Saída com suspensão.
     */
    IPI_55("55", "IPI 55 - Saída com suspensão"),
    /**
     * 99 - Outras saídas.
     */
    IPI_99("99", "IPI 99 - Outras saídas");
    private String cst;
    private String descricao;

    private IPIEnum(String codigo, String descricao) {
        this.cst = codigo;
        this.descricao = descricao;
    }

    /**
     * Descrição.
     */
    public String getDescricao() {
        return this.descricao;
    }

    /**
     * Código do IPI.
     */
    public String getCST() {
        return this.cst;
    }

    @Override
    public String toString() {
        return getDescricao();
    }

    /**
     * Obtém enum pelo código.
     */
    public static IPIEnum getEnumByCodigo(String codigo) {
        for (IPIEnum tipo : values()) {
            if (tipo.getCST().equals(codigo)) {
                return tipo;
            }
        }
        return null;
    }
}
